<?php

class FtemplatesController extends AppController {
	var $name = 'Ftemplates';
	var $components = array ('Pagination');
	var $helpers = array('Html','Form','Accessibility','Pagination');
	var $uses = array('Ftemplate','Formulario');
	
	function index() {
		$title = 'Formulários - modelos';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		$ftemplates = $this->Ftemplate->find('all');
		$this->set('ftemplates', $ftemplates);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/ftemplates');
		
		$title = 'Visualizar modelo';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		/* Carregando os valores */
		$condition = array('ftemplate_id'=>$id);
		$campos = $this->Ftemplate->Fctemplate->find('all',array('conditions'=>$condition));
		$this->set('campos',$campos);
		
		$this->Ftemplate->id = $id;
		$this->set('ftemplate', $this->Ftemplate->read());
	}

	function add() {
		$title = 'Cadastrar modelo';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		if (!empty($this->data)) {
			if ($this->Ftemplate->save($this->data)) {
				$totalCampos = $this->data['Ftemplate']['fieldIterator'];
				
				$ftemplate_id = $this->Ftemplate->getLastInsertId();
				
				// Cadastrar todos os campos
				for ($i = 0; $i<$totalCampos; $i++) {
					if (isset($this->data["Fctemplate_".$i])) {
						$Fctemplate = array('Fctemplate'=>$this->data["Fctemplate_".$i]);
						$Fctemplate['Fctemplate']['ftemplate_id'] = $ftemplate_id;

						$this->Ftemplate->Fctemplate->create();
						if (!$this->Ftemplate->Fctemplate->save($Fctemplate)) {
							$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar campo do ftemplate.';							
						}
					}
				}
				
				$_SESSION['mensagem']['success'][] = 'Ftemplate cadastrado com sucesso!';
				$this->redirect('/ftemplates/view/'.$ftemplate_id);
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar o ftemplate.';				
			}
			$this->redirect('/ftemplates');
		}
	}

	function edit( $id=null) {
		if (!$id) $this->redirect('/ftemplates');
		
		$title = 'Editar modelo';
		$this->set('title', $title);
		$this->set('pageTitle', $title);		
		
		/* Carregando os valores */
		$condition = array('ftemplate_id'=>$id);
		$campos = $this->Ftemplate->Fctemplate->find('all',array('conditions'=>$condition));
		$this->set('campos',$campos);
		
		$this->Ftemplate->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Ftemplate->read();
		} else {
			if ($this->Ftemplate->save($this->data['Ftemplate'])) {
				
				$totalCampos = $this->data['Ftemplate']['fieldIterator'];
				
				// Cadastrar todos os campos
				for ($i = 0; $i<$totalCampos; $i++) {
					//TODO: Verificar se pode alterar o tipo
					if (isset($this->data["Fctemplate_".$i])) {
						$Fctemplate = array('Fctemplate'=>$this->data["Fctemplate_".$i]);
						
						// TODO: Verificar se pode apagar
						// TODO: Fazer a funcionalidade ocultar
						// TODO: Apagar o valores tb
						if ((isset($Fctemplate['Fctemplate']['id'])) && (!isset($Fctemplate['Fctemplate']['name']))) {
							$this->Ftemplate->Fctemplate->del($Fctemplate['Fctemplate']['id']);
						} else {
							$Fctemplate['Fctemplate']['ftemplate_id'] = $id;

							$this->Ftemplate->Fctemplate->create();
							if (!$this->Ftemplate->Fctemplate->save($Fctemplate)) {
								$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar campo do ftemplate.';							
							}
						}
					}
				}
						
				$_SESSION['mensagem']['success'][] = 'Ftemplate alterado com sucesso!';
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar o ftemplate.';
			}
			$this->redirect('/ftemplates/view/'.$id);
		}
		$ftemplate = $this->Ftemplate->find(array('`Ftemplate`.id' => $id));
		$this->set('ftemplate', $ftemplate);
	}

	function delete($id) {
		if (!$id) $this->redirect('/ftemplates');
		if ($this->Ftemplate->del($id)) {
			
			// TODO: Apagar os valores tb
			$condition = array('ftemplate_id'=>$id);
			$campos = $this->Ftemplate->Fctemplate->find('all',array('conditions'=>$condition));
			foreach ($campos as $campo) {
				$this->Ftemplate->Fctemplate->del($campo['Fctemplate']['id']);
			}
		
			$_SESSION['mensagem']['success'][] = 'Ftemplate excluido com sucesso!';
		} else {
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir o ftemplate.';
		}
		$this->redirect('/ftemplates');
	}

	function copy($id=null) {
		if (!$id) $this->redirect('/ftemplates');
		
		/* Carregando os valores */
		$condition = array('ftemplate_id'=>$id);
		$campos = $this->Ftemplate->Fctemplate->find('all',array('conditions'=>$condition));
		$this->set('campos',$campos);
		
		$this->Ftemplate->id = $id;
		$ftemplate = $this->Ftemplate->read();
		$this->set('ftemplate', $ftemplate);
		
		$unitUser = $this->othAuth->getData('unit');
		//pr($this->Formulario);
		if (isset($unitUser[0])) {
			$organization_id = $unitUser[0]['Organization']['id'];
			
			$formulario['Formulario'] = $ftemplate['Ftemplate'];
			unset($formulario['Formulario']['id']);
			unset($formulario['Formulario']['created']);
			unset($formulario['Formulario']['modified']);
			$formulario['Formulario']['organization_id'] = $organization_id;
			$formulario['Fcampo'] = $ftemplate['Fctemplate'];
			
			
			if ($this->Formulario->save($formulario)) {
				$formulario_id = $this->Formulario->getLastInsertId();
				foreach ($formulario['Fcampo'] as $campo) {
					unset($campo['ftemplate_id']);
					$fcampo['Fcampo'] = $campo;
					$fcampo['Fcampo']['formulario_id'] = $formulario_id;
					unset($fcampo['Fcampo']['id']);
					unset($fcampo['Fcampo']['created']);
					unset($fcampo['Fcampo']['modified']);
										
					$this->Formulario->Fcampo->create();
					
					if (!$this->Formulario->Fcampo->save($fcampo)) {
						$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar campo do formulario.';							
					}
				}
				$_SESSION['mensagem']['success'][] = 'Formulario copiado';
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao copiar';
			}
				
			$this->redirect('/ftemplates');
			
		} else {
			$_SESSION['mensagem']['error'][] = 'Usuario não associado a uma entidade. Não foi possivel copiar.';	
			$this->redirect('/ftemplates');
		}
		
	}
}

